When an error correction decoding fails for a codeword stored in a nonvolatile memory, a controller enters a recovery mode to retrieve the stored data. With a conventional hard-decision decoder, the recovery typically involves adjusting references voltages used by the nonvolatile memory, re-reading the codeword and re-decoding the codeword. The hard-decision recovery mode is effective where the failure is due to a regular change in a distribution of the reference voltages, such as due to a drift in one direction. With a conventional soft-decision decoder, the controller aggregates soft information from multiple reads. The soft-decision decoder achieves a same uncorrectable bit error rate target at a worse raw bit error rate as the hard-decision decoder in the recovery mode.